// 分类模块
import { topCategory } from '@/api/constants'
import { findAllCategory } from '@/api/category'
export default {
  namespaced: true,
  state () {
    return {
      // 分类信息集合 依赖topcategory重新设置 保证初始化就要数据 不至于白屏
      // 转换为对象
      category: topCategory.map(item => ({ name: item }))
      // 默认的数据  拿到数据之后就进行替换
    }
  },
  // 修改分类数据的函数
  mutations: {
    // payload是将来拿到的所有分类集合
    setCategory (state, payload) {
      state.category = payload
    },
    // 定义show和hide函数，控制当前分类的二级分类的显示与隐藏
    show (state, id) {
      const currentCategrey = state.category.find(item => item.id === id)
      currentCategrey.open = true
    },
    hide (state, id) {
      const currentCategrey = state.category.find(item => item.id === id)
      currentCategrey.open = false
    }
  },
  // 获取分类的函数
  actions: {
    async getCategory ({ commit }) {
      // 获取分类数据
      const data = await findAllCategory()
      // 给每个一级分类加上控制二级分类显示和隐藏的数据
      data.result.forEach(top => {
        top.open = false
      })
      // 修改分类数据
      commit('setCategory', data.result)
    }
  }
}
